package br.os.communication;

import java.util.Date;
import java.util.Vector;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

import br.os.model.Ordem;
/**
 * CommEnviarOS
 * Classe responsável por enviar Ordem de serviço
 * ao servidor
 */
public class CommEnviarOS extends Thread{
	
	private String tecnico;
	private CommNotificador notificador;
	private String url;
	private Vector ordens;

	/**
	 * @param url
	 * @param tecnico 
	 * @param notificador
	 */
	public CommEnviarOS(String url, Vector ordens, String tecnico,CommNotificador notificador) {
		this.url = url;
		this.ordens = ordens; 
		this.tecnico = tecnico;
		this.notificador = notificador;
	}

	/**
	 * Envia uma requisicao de autenticacao ao Servidor.
	 */
	public void run() {
		try {
			HttpConnection httpConnection = (HttpConnection) Connector.open(url);
			httpConnection.setRequestMethod(HttpConnection.POST);
			httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.1 Configuration/CLDC-1.1");
			httpConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
			String encoded = "baixa=" + ObjectToXML(ordens);
			httpConnection.setRequestProperty("Content-Length", Integer.toString(encoded.length()));
			httpConnection.openOutputStream().write(encoded.getBytes());
			notificador.notificarInputStream(httpConnection.openInputStream());
		} catch (Exception e) {
			notificador.notificarException(e);
		}
	}
	/**
	 * ObjectToXML
	 */
	public StringBuffer ObjectToXML(Vector vector){
		StringBuffer resposta = new StringBuffer();		
		resposta.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
		resposta.append("<baixa tecnico=\"" + tecnico + "\">");
		resposta.append("<ordens quantidade=\""+ vector.size() +"\">");		   
		Ordem ordem;
		for (int i = 0; i < ordens.size(); i++) {
			ordem = (Ordem) ordens.elementAt(i);
			resposta.append("<ordem " +
							  "id=\"" + ordem.getId() + "\" " +
							  "cliente=\"" + ordem.getCliente()+ "\" " +
							  "dtExec=\"" + new Date().getTime() + "\"> " +
							   ordem.getServico() +
							 "</ordem>");
		}
		resposta.append("</ordens>");
		resposta.append("</baixa>");
		return resposta;		
	}
	

}
